Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Commit 3948c9a1875417179b1d0ec4c1298ea0230a422f


Parents : d6b1b9c
Author : Mark Qvist <mark@unsigned.io>
Date : 2025-01-18T21:36:08+01:00

Added message reject on too large transfer size

Changes

2 files changed, 15 insertions(+), 3 deletions(-)


Diff

diff --git a/LXMF/LXMRouter.py b/LXMF/LXMRouter.py
index 2ec4e8e..79678c6 100644
--- a/LXMF/LXMRouter.py
+++ b/LXMF/LXMRouter.py
@@ -1777,7 +1777,9 @@ class LXMRouter:
self.failed_outbound.append(lxmessage)
- lxmessage.state = LXMessage.FAILED
+ if lxmessage.state != LXMessage.REJECTED:
+ lxmessage.state = LXMessage.FAILED
+
if lxmessage.failed_callback != None and callable(lxmessage.failed_callback):
lxmessage.failed_callback(lxmessage)
@@ -1871,6 +1873,12 @@ class LXMRouter:
if lxmessage.failed_callback != None and callable(lxmessage.failed_callback):
lxmessage.failed_callback(lxmessage)
+ elif lxmessage.state == LXMessage.REJECTED:
+ RNS.log("Receiver rejected "+str(lxmessage)+", removing from outbound queue", RNS.LOG_DEBUG)
+ self.pending_outbound.remove(lxmessage)
+ if lxmessage.failed_callback != None and callable(lxmessage.failed_callback):
+ lxmessage.failed_callback(lxmessage)
+
else:
RNS.log("Outbound processing for "+str(lxmessage)+" to "+RNS.prettyhexrep(lxmessage.get_destination().hash), RNS.LOG_DEBUG)

diff --git a/LXMF/LXMessage.py b/LXMF/LXMessage.py
index 316e798..2342708 100644
--- a/LXMF/LXMessage.py
+++ b/LXMF/LXMessage.py
@@ -16,9 +16,10 @@ class LXMessage:
SENDING = 0x02
SENT = 0x04
DELIVERED = 0x08
+ REJECTED = 0xFD
CANCELLED = 0xFE
FAILED = 0xFF
- states = [GENERATING, OUTBOUND, SENDING, SENT, DELIVERED, CANCELLED, FAILED]
+ states = [GENERATING, OUTBOUND, SENDING, SENT, DELIVERED, REJECTED, CANCELLED, FAILED]
UNKNOWN = 0x00
PACKET = 0x01
@@ -565,7 +566,10 @@ class LXMessage:
if resource.status == RNS.Resource.COMPLETE:
self.__mark_delivered()
else:
- if self.state != LXMessage.CANCELLED:
+ if resource.status == RNS.Resource.REJECTED:
+ self.state = LXMessage.REJECTED
+
+ elif self.state != LXMessage.CANCELLED:
resource.link.teardown()
self.state = LXMessage.OUTBOUND


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────